package com.dxy.yesas2020goals.study.partone.disignpattern.singletonpattern.Innerclasssingleton;

/**
 * @author victorydeng
 * @Classname LazyInnerClassSingleton
 * @Description TODO
 * @Date 2020/2/28 20:13
 * @Created by victorydeng
 */
//利用内部类的加载机制
public class LazyInnerClassSingleton {


  //私有构造器
  private LazyInnerClassSingleton() {}

  //提供一个全局的访问方法
  //使用 LazyInnerClassSingleton的时候，默认加载外层的.class文件内部类用$LazyHolder指向
  //如果没使用，则内部类是不加载的
  //每一个关键字都不是多余的，static 是为了使单例的空间共享，保证这个方法不会被重写、重载
  public static final LazyInnerClassSingleton getInstance(){
   //在返回结果以前，一定会先加载内部类
    return LazyHolder.LAZY;
  }
  //默认不加载
  private static class LazyHolder{
    private static final LazyInnerClassSingleton LAZY = new LazyInnerClassSingleton();
  }





}
